#01 Go 語言 環境變數 


Posted by len107008 on 2020-05-22

  • 前情提要:已經安裝完 GO 語言。
  • Tips:透過命令 $ go env 可以查詢所有 GO 環境變數的設定。

1. GOROOT

 GOROOT 為存放 Golang 語言內建程式庫的路徑,使開發 Golang 程式或 import 內建程式庫時不需要額外的安裝。
※ 通常下載安裝完後電腦就已經設定好 GOROOT 了,不需要額外的手動操作。(除非下載的是壓縮版的 GO 語言安裝檔,這時候就可能需要注意一下 GOROOT 值是否正確)

2. GOPATH

 GOPATH 通常設定為存放開發程式碼(工作區)的根目錄,內含 src、bin、pkg 三個基本的資料夾。

yourGOproject/
          └─── src
          └─── bin    
          └─── pkg
  • 以上面這樣的架構來說,GOPATH 就是 yourGOproject 資料夾(工作區根目錄)。
    • 官方慣例,在 GOPATH 下的資料夾 bin 專門放置 build 出來的可執行檔案,但也可以透過指令 $go build -o [build出來的路徑和檔案名稱] [要被 build 的檔案來源路徑和名稱] 來更改編譯結果的位置。

3. GO111MODULE

  GOPATH 的缺點是:除了官方程式庫以外,所有引入的第三方套件,都必須存在於 GOPATH/src 路徑中,否則無法使用,因此,這在專案越來越大,專案裡混雜第三方套件、官方套件、自己開發的套件等等時,管理上來說非常不方便。
  為了解決這個問題,GO 1.11 版本開始推出 GO MODULE,而 GO111MODULE 就是這項功能的設定開關。

  GO111MODULE 有三個值可以設定,強制使用(on),強制不使用(off)和自動(auto)。

  注意 GO111MODULE 的行為和 GO 版本有關係,在 GO 1.13 版本下將 GO111MODULE 設置為 auto 時,其實它的行為是這樣的:

  • 當存在 go.mod 或執行命令位置處於 GOPATH 外,GO111MODULE=on
  • 當不存在 go.mod 或執行命令位置處於 GOPATH 內,GO111MODULE=off
    • 註:go.mod 是紀錄套件版本的檔案。

在 GO111MODULE 值為 on 的情況下,引入一個第三方套件看看效果:
在 GOPATH 內使用指令 go get 來下載套件,語法是 $go get [url]

下載完之後,就會發現 GOPATH/pkg 內多出了套件資料,可以引入使用了。  













Related Posts

Axios 全域設定、攔截器與 JWT 換發

Axios 全域設定、攔截器與 JWT 換發

CS50 HTTP (Hypertext Transfer Protocol)

CS50 HTTP (Hypertext Transfer Protocol)

簡明 App Inventor 手機應用程式設計入門教學

簡明 App Inventor 手機應用程式設計入門教學


Comments